boxmoe_header_banner_img

加载中

Vue搭建二次元风格博客完整教程


Vue搭建二次元风格博客完整教程

使用Vue搭建一个带有二次元风格的博客,不仅能让你拥有完全自定义的个人空间,还能在开发过程中深入掌握Vue全家桶技术。下面我将从零开始,为你整理一份完整的教程。

一、方案选择:三种搭建路径

在开始之前,你需要根据自己的技术水平和需求,选择适合的搭建方案:

方案一:从零开始自研(适合想深入学习Vue的开发者)

这是最能锻炼技术的方案,完全自己控制代码和设计。你可以参考掘金上一位开发者耗时三个多月实现的ADK-Blog项目,它基于Vue3 + Vite2 + Pinia + TypeScript构建,具有完整的二次元主题风格和换肤功能。这种方式自由度最高,但开发周期也最长。

方案二:基于开源二次元主题二次开发(适合想快速上线并保留二次元风格的开发者)

这是平衡效率与个性化的最佳选择。你可以在GitHub上找到现成的二次元主题项目,比如蝉时雨大佬开发的Aurora主题,或者霜星酱开发的RainbowLight博客系统(基于SpringBoot+Vue实现)。下载源码后,根据自己的需求修改配色、文案和功能即可。

方案三:使用无头CMS + Vue(适合需要频繁更新内容且不懂后台开发的博主)

如果你希望写文章方便,又想要Vue的前端体验,可以选择这种前后端分离的方案。选择一个无头CMS(如Strapi、Contentful),通过API获取内容,前端用Vue渲染。这样你可以在CMS后台写文章,前端自动更新,非常适合内容驱动型博客。

二、环境准备与项目初始化

无论选择哪种方案,都需要先配置好开发环境:

2.1 安装Node.js和npm

访问Node.js官网下载安装LTS版本。安装完成后,在命令行验证:

node -v
npm -v

2.2 安装Vue CLI

使用npm全局安装Vue CLI脚手架工具:

npm install -g @vue/cli
vue --version

2.3 创建Vue项目

vue create my-anime-blog

根据提示选择配置。对于新手,建议选择“Default (Vue 3)”预设;如果你想自定义,可以手动选择Router、Vuex/Pinia、CSS预处理器等。

2.4 进入项目并启动

cd my-anime-blog
npm run serve

访问http://localhost:8080,你将看到默认的Vue欢迎页面。

三、实现二次元风格的核心设计

二次元风格博客的精髓在于视觉设计的独特性。参考ADK-Blog的设计经验,整体设计遵循一定的规则:3px的粗边框、圆角、粗字体等,并制定了全局的LESS变量以便统一管理。

3.1 配色方案设计

二次元风格常用高饱和度的色彩、渐变色和萌系元素。你可以在项目中定义全局CSS变量:

在src/assets/css/theme.css中:

:root {
  --primary-color: #ff6b9d;  /* 主色调:樱花粉 */
  --secondary-color: #9b6bff; /* 辅助色:紫罗兰 */
  --bg-color: #fff5f7;        /* 背景色:浅粉白 */
  --card-bg: rgba(255, 255, 255, 0.9); /* 卡片背景:半透明白 */
  --border-radius: 20px;       /* 圆角大小 */
  --box-shadow: 0 10px 20px rgba(255, 107, 157, 0.2); /* 阴影效果 */
}

3.2 字体与图标选择

选择具有二次元感觉的字体,如站酷快乐体、方正卡通简体等。图标可以使用Font Awesome或自定义的二次元风格图标集。

3.3 背景与装饰元素

添加二次元风格的背景图、飘落的樱花动画、看板娘(Live2D)等元素。可以参考蝉时雨的Aurora主题,它使用Github issues存储文章,Gitalk作为评论系统,LeanCloud存储热度数据,整体风格非常二次元。

3.4 实现换肤功能(可选)

如果你想要更高级的功能,可以实现主题切换。ADK-Blog通过全局LESS变量结合Pinia状态管理,实现了动态换肤:用户选择的配色方案会保存到localStorage,每次进入网站自动读取。

四、核心功能实现

4.1 配置路由

安装Vue Router并配置路由:

npm install vue-router@4

在src/router/index.js中:

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import PostList from '../views/PostList.vue'
import PostDetail from '../views/PostDetail.vue'
import About from '../views/About.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/posts', component: PostList },
  { path: '/post/:slug', component: PostDetail },
  { path: '/about', component: About }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

4.2 创建博客组件

创建以下核心组件:

· Navbar.vue:导航栏,包含站点logo和菜单
· PostCard.vue:文章卡片,展示标题、摘要、封面图
· Sidebar.vue:侧边栏,展示个人信息、分类、标签云
· Footer.vue:页脚,包含版权信息和社交链接

4.3 集成Markdown支持

如果你希望用Markdown写文章,需要集成Markdown解析器:

npm install marked

创建Markdown渲染组件MarkdownRenderer.vue:

<template>
  <div v-html="compiledMarkdown" class="markdown-body"></div>
</template>

<script>
import { marked } from 'marked'
import 'github-markdown-css' // 引入Markdown样式

export default {
  props: ['content'],
  computed: {
    compiledMarkdown() {
      return marked(this.content)
    }
  }
}
</script>

4.4 实现评论系统

推荐使用Valine或Gitalk作为评论系统。以Valine为例,需要注册LeanCloud国际版账号。

在评论组件中配置:

// Comment.vue
const setValine = () => {
  new Valine({
    el: '#vcomment',
    appId: '你的AppId',
    appKey: '你的AppKey',
    avatar: 'mp',
    placeholder: '来发一条弹幕吧~'
  })
}

五、内容获取方式选择

根据你选择的方案,内容获取方式也不同:

5.1 本地Markdown文件(适合简单博客)

将文章写成.md文件放在项目中,通过构建工具打包。这种方式简单但更新文章需要重新部署。

5.2 无头CMS API(适合内容驱动型博客)

以Strapi为例,通过API获取文章:

// 在组件中获取文章列表
async function fetchPosts() {
  const response = await fetch('http://localhost:1337/api/posts')
  const data = await response.json()
  posts.value = data.data
}

5.3 GitHub Issues(适合技术博主)

参考蝉时雨的做法,利用GitHub Issues作为文章存储,用Gitalk作为评论系统。这种方式完全免费,且天然支持Markdown。

5.4 自建后端API(适合全栈进阶)

如果你希望完全掌控,可以自建后端。如RainbowLight博客系统采用SpringBoot后端,提供文章、分类、标签、友链等API接口。

六、二次元风格美化进阶

6.1 添加Live2D看板娘

引入Live2D看板娘是二次元网站的标配。可以使用开源项目live2d-widget,在public/index.html中引入:

<script src="https://cdn.jsdelivr.net/npm/live2d-widget@3.x/lib/L2Dwidget.min.js"></script>
<script>
  L2Dwidget.init({
    model: { jsonPath: 'https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json' },
    display: { position: 'right', width: 150, height: 300 }
  })
</script>

6.2 添加樱花飘落特效

使用Canvas实现樱花飘落动画,增强二次元氛围。

6.3 自定义鼠标指针

将默认鼠标指针替换为二次元风格的指针,增加趣味性。

6.4 实现卡片悬停动画

参考微信开发社区一位开发者的做法,卡片使用鼠标放上去有上推的阴影效果,非常好看。

.post-card {
  transition: transform 0.3s, box-shadow 0.3s;
}
.post-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 15px 30px rgba(255, 107, 157, 0.3);
}

七、SEO优化

由于Vue是单页应用,默认不利于搜索引擎抓取。你需要做好SEO优化。

7.1 使用动态meta标签

安装unhead或vue-meta管理页面标题和描述:

useHead({
  title: computed(() => post.value?.title + ' - 我的二次元博客'),
  meta: [
    { name: 'description', content: computed(() => post.value?.summary) },
    { name: 'keywords', content: '二次元,动漫,博客,Vue' }
  ]
})

7.2 生成sitemap

使用sitemap-generator插件生成网站地图

上一次更新已经跑远了✨ 计算中...
(‾◡◝) 本内容里的一些消息,可能已经跟不上时间啦~
感谢您的支持
微信赞赏

微信扫一扫

支付宝赞赏

支付宝扫一扫



评论(0)

查看评论列表

暂无评论


发表评论

北京时间 (Asia/Shanghai)

定位中...
🌤️
--°C
加载中...
体感: --°C
湿度: --%

博客统计

  • 167 点击次数
重要的日子2026年3月20日
重要的日子即将来临。
2026 年 3 月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

已阻挡的垃圾评论

后退
前进
刷新
复制
粘贴
全选
删除
返回首页

💿 音乐控制窗口

🎼 歌词

🪗 歌曲信息

封面

🎚️ 播放控制

🎶 播放进度

00:00 00:00

🔊 音量控制

100%

📋 歌单

0%
目录
顶部
底部
📖 文章导读